package com.xmg.p2p.base.domain;

import com.xmg.p2p.base.util.BitStatesUtils;
import lombok.Data;

import java.util.Date;


/**
 * 用户的相关信息
 * 
 * 
 */
@Data
public class Userinfo extends BaseDomain {

	private int version; // 版本号
	private long bitState = 0; // 用户状态码  0000
	private String realName;//用户的真实姓名
	private String idNumber;//身份证
	private String phoneNumber;//电话号码
	private String email;//邮箱

	private int authScore ; // 用户的风控总分数
	private Long realAuthId ; //用户实名认证  判断是否有对应的实名认证对象  冗余数据

	private SystemDictionaryItem incomeGrade; // 收入:0-3000
	private SystemDictionaryItem marriage; // 婚姻情况: 未婚
	private SystemDictionaryItem kidCount; // 子女情况：没有子女
	private SystemDictionaryItem educationBackground; // 学历：xxx
	private SystemDictionaryItem houseCondition; // 住房条件： 桥洞
	// 判断是否已经绑定了手机
	public boolean getIsBindPhone() {
		System.err.println("bind phone .....");
		return BitStatesUtils.hasState(this.bitState,
				BitStatesUtils.OP_BIND_PHONE);
	}
	
	// 判断是否已经绑定看了银行卡
	public boolean getIsBindBank() {
		System.err.println("bind bank card .....");
		return BitStatesUtils.hasState(this.bitState,
				BitStatesUtils.OP_HAS_BIND_BANK);
	}

	// 判断是否已经绑定了邮箱
	public boolean getIsBindEmail() {
		System.err.println("bind email .....");
		return BitStatesUtils.hasState(this.bitState,
				BitStatesUtils.OP_BIND_EMAIL);
	}

	// 添加绑定的状态码
	public void addState(Long state) {
		bitState = BitStatesUtils.addState(this.bitState, state);
	}
	// 移除状态码
	public void  removeState(Long state) {
		bitState = BitStatesUtils.removeState(this.bitState, state);
	}

	// 判断用户是否已经填写了基本资料
	public boolean getIsBasicInfo() {
		return BitStatesUtils.hasState(this.bitState,
				BitStatesUtils.OP_BASIC_INFO);
	}

	// 判断用户是否已经实名认证
	public boolean getIsRealAuth() {
		return BitStatesUtils.hasState(this.bitState,
				BitStatesUtils.OP_REAL_AUTH);
	}

	// 判断用户是否已经视频认证
	public boolean getIsVedioAuth() {
		return BitStatesUtils.hasState(this.bitState,
				BitStatesUtils.OP_VEDIO_AUTH);
	}
	// 判断用户是否已经有一个借款在审核流程中
	public boolean getHasBidRequestInProcess() {
		return BitStatesUtils.hasState(this.bitState,
				BitStatesUtils.OP_HAS_BIDREQUEST_PROCESS);
	}
	// 判断用户是否已经有一个提现在审核流程中
	public boolean getHasWithdrawInProcess() {
		return BitStatesUtils.hasState(this.bitState,
				BitStatesUtils.OP_HAS_WITHDRAW_PROCESS);
	}



}
